package cn.com.dhcc.turbo.service.queue;

import java.util.List;

import cn.com.dhcc.app.core.util.Status;
import cn.com.dhcc.turbo.entity.exch.QueueFileMsgWrapper;
import cn.com.dhcc.turbo.entity.registry.NodeInfo;
import cn.com.dhcc.turbo.entity.registry.Queue;

/**
 * 队列管理服务接口
 */
public interface QueueService {
	/**
	 * 往队列里面发送消息
	 * @param queueName
	 * @param message
	 * @return
	 */
	public Status sendMessage(final String queueName, final Object message);
	public Status sendFile(String queueName,final QueueFileMsgWrapper  fileMsgWrapper);
	
	/**
	 * 监测队列是否存在
	 * @param queueName
	 * @return
	 */
	public boolean isExistQueue(String queueName);
	
	
	/**
	 * 新增发送队列
	 * @param queue
	 * @return
	 */
	public Status addSendQueue(Queue queue);
	
	/**
	 * 初始化发送队列
	 * @param from
	 * @param to
	 * @return
	 */
	public Status initSendQueue(NodeInfo toNode);

	/**
	 * 新增本地队列
	 * @param queue
	 * @return
	 */
	public Status addRecvQueue(Queue queue);

	
	/**
	 * 获取发送队列列表
	 * @return
	 */
	public List<? extends Queue> getSendQueueList();
	
	
	/**
	 * 获取发送队列列表
	 * @return
	 */
	public List<? extends Queue> getSendQueueList(String ip);

	
	/**
	 * 获取本地队列列表
	 * @return
	 */
	public List<? extends Queue> getRecvQueueList();
	
	/**
	 * 获取本地队列列表
	 * @return
	 */
	public List<? extends Queue> getRecvQueueList(String ip);
}
